package com.acme.bankapp.service.bank;

import com.acme.bankapp.domine.client.*;
import com.acme.bankapp.domine.bank.*;
import com.acme.bankapp.exceptions.ClientExistsException;

import java.io.IOException;
import java.util.List;


public interface BankService {

    Bank createNewBank();

    Bank createNewBank(final List<ClientRegistrationListener>
            clientRegistrationListenerList);

    void addClient(final Bank bank, final Client client)
            throws ClientExistsException;

    Client addClient(final Bank bank, final String name,
            final Gender gender) throws ClientExistsException;

    void printBalance(final Bank bank);

    void printMaximumAmountToWithdraw(final Bank bank);

    void saveBank(Bank bank, String pathTo) throws IOException;

    Bank loadBank(String pathFrom) throws IOException;
}
